//
//  NSFileManager+BZHelper.h
//  BZFoundation
//
//  Created by 郭艺伟 on 2017/10/1.
//  Copyright © 2017年 郭艺伟. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface NSFileManager (BZHelper)

/**
 *    添加一个路径指定为不使用iCloud备份属性
 *
 *    @param path 需要不被iCloud备份的路径
 */
+ (void)bz_addDoNotBackupAttribute:(NSString *)path;
@end

typedef NS_ENUM(UInt16, BZImageScaleType) {
    BZImageScale1X     =   0,      // 一倍图
    BZImageScale2X     =   1,      // 二倍图
    BZImageScale3X     =   2       // 三倍图
};

@interface NSFileManager (MUPImageHelper)

/**
 *    使用一个文件路径以及指定的倍数，判断是否为指定倍数图像路径
 *
 *    例如传入MUPImageScale2X，则文件路径最后以“@2x.xxx”结束的返回YES，其他类似该路iji
 *    @param path 图像指向的文件路径
 *
 *    @return 返回YES如果文件属于指定的倍数，否则返回NO
 */
+ (BOOL)bz_isImageFilePath:(NSString *)path scaleType:(BZImageScaleType)type;

/**
 *    是否只有指定倍数的图像文件存在
 *
 *    @param stringFileName 文件名，格式如：example.png
 *
 *    @return 返回YES如果只有指定的倍数图像文件存在，否则返回NO
 */
+ (BOOL)bz_isImageFileOnly:(NSString *)stringFileName scaleType:(BZImageScaleType)type;

/**
 *    生成图片的物理路径
 *
 *    @param fileName      文件名，不包含扩展名
 *    @param extensionName 扩展名
 *    @param isRetina      是否二倍图
 *
 *    @return 返回根据文件名、扩展名、是否二倍图的选项拼接成的路径字符串
 */
+ (NSString *)bz_imageFilePathByFileName:(NSString *)fileName
                                extension:(NSString *)extensionName
                                scaleType:(BZImageScaleType)type;

/**
 *    生成图片的物理路径
 *
 *    @param name     完整的文件名，需要为"filename.extension"形式
 *    @param isRetina 是否二倍图
 *
 *    @return 返回根据文件名、是否二倍图的选项拼接成的路径字符串
 */
+ (NSString *)bz_imageFilePathByName:(NSString *)name
                            scaleType:(BZImageScaleType)type;

/**
 *    判断指定文件路径是否存在该文件
 *
 *    @param strPath 文件路径
 *
 *    @return 返回YES如果该文件存在，否则返回NO
 */
+ (BOOL)bz_isFileExistInPath:(NSString *)stringPath;

/**
 *    获取指定文件的属性 [未实现]
 *
 *    @param sPath 指定需要查看属性的文件路径
 *
 *    @return 返回0或者
 */
+ (int)getSkipBackupAttributeToItemAtURL:(NSString*)sPath;

/**
 *  判断是否设置了
 *
 */
//+ (BOOL)isItemSkipBackup:(NSString*)sPath;


// ============== =============== ============
// ============== =============== ============
// ============== =============== ============

/**
 *    是否retina图像路径
 *
 *    @param path 图像指向的真实路径
 *
 *    @return 返回YES如果文件名带”@2x“，否则返回NO
 */
+ (BOOL)bz_isRetinaFilePath:(NSString *)path;

/**
 *    是否只有二倍图的图像文件
 *
 *    @param stringFileName 文件名，格式如：example.png
 *
 *    @return 返回YES如果只有@2x的图像文件存在，否则返回NO
 */
+ (BOOL)bz_isRetinaImageFileOnly:(NSString *)stringFileName;

/**
 *    生成图片的物理路径
 *
 *    @param fileName      文件名，不包含扩展名
 *    @param extensionName 扩展名
 *    @param isRetina      是否二倍图
 *
 *    @return 返回根据文件名、扩展名、是否二倍图的选项拼接成的路径字符串
 */
+ (NSString *)bz_imageFilePathByFileName:(NSString *)fileName extension:(NSString *)extensionName isRetina:(BOOL)isRetina;

/**
 *    生成图片的物理路径
 *
 *    @param name     完整的文件名，包含文件名.扩展名形式
 *    @param isRetina 是否二倍图
 *
 *    @return 返回根据文件名、是否二倍图的选项拼接成的路径字符串
 */
+ (NSString *)bz_imageFilePathByName:(NSString *)name isRetina:(BOOL)isRetina;

/**
 *    设定指定路径文件设置不被iTune、iCloud备份
 *
 *    @param sPath 需要不备份的文件路径
 *
 *    @return 返回YES如果备份属性设置成功，否则返回NO
 */
+ (BOOL)bz_addSkipBackupAttributeToItemAtURL:(NSString*)sPath;

/**
 *    获取指定文件的属性
 *
 *    @param sPath 指定需要查看属性的文件路径
 *
 *    @return 返回0或者
 */
+ (int)bz_getSkipBackupAttributeToItemAtURL:(NSString*)sPath;

//判断是否设置了
+ (BOOL)bz_isItemSkipBackup:(NSString*)sPath;

@end
